package simple.number;

/**
 * <a href="https://leetcode.cn/problems/divisor-game/">1025. 除数博弈</a>
 * 爱丽丝和鲍勃一起玩游戏，他们轮流行动。爱丽丝先手开局。
 * 最初，黑板上有一个数字 n 。在每个玩家的回合，玩家需要执行以下操作：
 *   选出任一 x，满足 0 < x < n 且 n % x == 0 。
 *   用 n - x 替换黑板上的数字 n 。
 * 如果玩家无法执行这些操作，就会输掉游戏。
 * 只有在爱丽丝在游戏中取得胜利时才返回 true 。假设两个玩家都以最佳状态参与游戏。
 * 示例 1：
 *   输入：n = 2
 *   输出：true
 *   解释：爱丽丝选择 1，鲍勃无法进行操作。
 * 示例 2：
 *   输入：n = 3
 *   输出：false
 *   解释：爱丽丝选择 1，鲍勃也选择 1，然后爱丽丝无法进行操作。
 * 提示：
 *   1 <= n <= 1000
 * @author 刘学松
 * @date 2023-07-05 14:12
 */
public class 除数博弈 {
    public boolean divisorGame(int n) {
        // 1、奇数的模数只能是奇数，减后剩下一个偶数，对方就一定是有机会赢的（0~偶数之间一定有值可选），等到剩下2的时候，对方一定赢
        // 2、偶数的模数可以是奇数也可以是偶数，选奇数，那么一定会剩下一个奇数，然后又回到1了，给自己制造机会
        return (n & 1) == 0;
    }
}
